Reliable data storage depends, in part, on the ability of the underlying memory technology—the hardware—to maintain an accurate indication of the data being stored. Defects in the hardware are commonplace due to a variety of factors including the variations in manufacturing, memory usage, and external conditions. In general, memory errors fall within one of two categories of errors. The first type of error is a hard error, which occurs due to a physical defect in the memory hardware. The second type of error is a soft error, which refers to non-permanent errors such as those caused by electromagnetic radiation. Hard errors are also referred to as repeatable errors because they tend to be errors in the data due to a permanent condition, such as a stuck bit; whereas soft errors manifest as a spontaneous flip of a bit to an opposite state. Sometimes, when multiple soft errors occur within a same block (or other designated region) of memory, the error is considered to be a hard error. Both hard and soft errors may occur during the lifetime of memory hardware, and the memory hardware may further degrade over time.
To minimize the adverse effects of memory errors, various error correction techniques may be applied. There are error correction codes, memory parity checking algorithms and hardware solutions using additional memory bits, memory controller error correction and memory logic error correction.